﻿using System;
using Collab.Services.Remote.WebserviceProxy.ServiceProxy;
namespace Collab.Services.Remote.WebserviceProxy
{
    public interface IRepository
    {
        void AddToConactsAsync(User user, Contact newContact, EventHandler callback);
        bool AuthenticateUser(string username, string password);
        WebServiceClient Client { get; }
        void DeleteContactAsync(Contact contact, User user, EventHandler callback);
        void EditUserAsync(User user, EventHandler callback);
        System.Collections.Generic.IEnumerable<OnlineStatus> GetOnlineStatuses(Guid userId);
        OnlineStatus GetRecentOnlineStatus(Guid userId);
        System.Collections.Generic.IEnumerable<SessionInvite> GetSessionInvites(Guid userId);
        User GetUser(string username);
        void GetUserAsync(string username, EventHandler callback);
        void SearchUsersAsync(string query, EventHandler callback);
        void SetStatus(Guid userId, string ip, int port);
        void CreateSessionInvite(Guid invitingUserId, Guid invitedUserId, string message, string invitingUserIP);
        void InivteToGroupAsync(GroupInvite invite, EventHandler callback);
    }
}
